package com.cqq.common.core.interfaces;

import java.io.Serializable;
import java.util.List;

import com.cqq.common.core.base.BaseQuery;

/**
 * <h3>通用Dao接口</h3>
 *
 * <p>
 * 定义了公共的Dao方法接口
 * </p>
 * 
 * @author xijq
 * @version 1.0.0
 * 
 */
public interface CommonDao <T extends Serializable> {

	/**
	 * <h3>新增数据</h3>
	 * 
	 * @param obj 数据对象
	 * 
	 */
	public void add(T obj);
	
	/**
	 * <h3>删除数据</h3>
	 * 
	 * @param id 数据主键ID
	 * 
	 * @return int 删除记录数
	 * 
	 */
	public Integer delete(Serializable id);
	
	/**
	 * <h3>更新数据</h3>
	 * 
	 * @param obj 数据对象
	 * 
	 * @return int 更新记录数
	 * 
	 */
	public Integer update(T obj);
	
	/**
	 * <h3>根据ID查询数据对象</h3>
	 * 
	 * @param id 数据主键ID
	 * 
	 * @return 数据对象
	 * 
	 */
	public T queryById(Serializable id);
	
	/**
	 * <h3>查询所有数据对象列表</h3>
	 * 
	 * @return 数据对象列表
	 * 
	 */
	public List<T> queryAll();
	
	/**
	 * <h3>按条件分页查询数据对象列表</h3>
	 * 
	 * @param query 查询条件对象
	 * 
	 * @return 数据对象列表
	 * 
	 */
	public List<T> queryPage(BaseQuery query);
	
	/**
	 * <h3>按条件查询总记录数</h3>
	 * 
	 * @param query 查询条件对象
	 * 
	 * @return int 记录数量
	 * 
	 */
	public Integer queryCount(BaseQuery query);
	
}
